{
  "workflow": {
    "id": 4095,
    "name": "Tesla quant technical indicators webhooks tool",
    "views": 921,
    "recentViews": 0,
    "totalViews": 921,
    "createdAt": "2025-05-16T08:58:13.199Z",
    "description": "📡 This workflow serves as the **central Alpha Vantage API fetcher** for Tesla trading indicators, delivering **cleaned 20-point JSON outputs** for three timeframes: `15min`, `1hour`, and `1day`.\nIt is **required** by the following agents:\n\n* Tesla 15min, 1h, 1d Indicators Tools\n* Tesla Financial Market Data Analyst Tool\n\n ✅ **Requires an Alpha Vantage Premium API Key**\n 🚀 Used as a **sub-agent via webhook endpoints** triggered by other workflows\n\n---\n\n## 📈 What It Does\n\nFor each timeframe (`15min`, `1h`, `1d`), this tool:\n\n1. Triggers **6 technical indicators** via Alpha Vantage:\n\n   * RSI\n   * MACD\n   * BBANDS\n   * SMA\n   * EMA\n   * ADX\n2. **Trims the raw response** to the **latest 20 data points**\n3. Reformats into a **clean JSON structure**:\n\n   ```json\n   {\n     \"indicator\": \"MACD\",\n     \"timeframe\": \"1hour\",\n     \"data\": {\n       \"timestamp\": \"...\",\n       \"macd\": 0.32,\n       \"signal\": 0.29\n     }\n   }\n   ```\n4. Returns results via **Webhook Respond** for the calling agent\n\n---\n\n## 📂 Required Credentials\n\n* 🔑 **Alpha Vantage Premium API Key**\n  Set up under `Credentials &gt; HTTP Query Auth`\n\n  * Name: `Alpha Vantage Premium`\n  * Query Param: `apikey`\n\nGet yours here: [https://www.alphavantage.co/premium/](https://www.alphavantage.co/premium/)\n\n---\n\n## 🛠️ Setup Steps\n\n1. **Import Workflow** into n8n\n   Name it: `Tesla_Quant_Technical_Indicators_Webhooks_Tool`\n\n2. **Add HTTP Query Auth Credential**\n   Name: `Alpha Vantage Premium`\n   Param key: `apikey`\n   Value: your Alpha Vantage key\n\n3. **Publish and Use the Webhooks**\n   This workflow exposes 3 endpoints:\n\n   * `/15minData` → used by 15m Indicator Tool\n   * `/1hourData` → used by 1h Indicator Tool\n   * `/1dayData` → used by 1d Indicator Tool\n\n4. **Connect via Execute Workflow** or HTTP Request\n   Ensure caller sends webhook trigger correctly to the path\n\n---\n\n## 🧱 Architecture Summary\n\nEach timeframe section includes:\n\n| Component          | Details                                       |\n| ------------------ | --------------------------------------------- |\n| 📡 Webhook Trigger | Entry node (`/15minData`, `/1hourData`, etc.) |\n| 🔄 API Calls       | 6 nodes fetching indicators via Alpha Vantage |\n| 🧹 Formatters      | JS Code nodes to clean and trim responses     |\n| 🧩 Merge Node      | Consolidates cleaned JSONs                    |\n| 🚀 Webhook Respond | Returns structured data to calling workflow   |\n\n---\n\n## 🧾 Sticky Notes Overview\n\n✅ **Webhook Entry**: Instructions per timeframe\n✅ **API Call Summary**: Alpha Vantage endpoint for each indicator\n✅ **Format Nodes**: Explain JSON parsing and cleaning\n✅ **Merge Logic**: Final output format\n✅ **Webhook Response**: What gets returned to caller\n\nAll stickies follow n8n standard color-coding:\n\n* Blue = Webhook flow\n* Yellow = API request group\n* Purple = Formatters\n* Green = Merge step\n* Gray = Workflow overview and usage\n\n---\n\n## 🔐 Licensing & Support\n\n© 2025 **Treasurium Capital Limited Company**\nThis agent is part of the Tesla Quant AI Trading System and protected under U.S. copyright.\n\nFor support:\n🔗 [Don Jayamaha – LinkedIn](https://linkedin.com/in/donjayamahajr)\n🔗 [n8n Creator Profile](https://n8n.io/creators/don-the-gem-dealer/)\n\n---\n\n🚀 **Use this API tool to feed Tesla technical indicators into any AI or trading agent across 15m, 1h, and 1d timeframes.**\n**Required for all Tesla Quant Agent indicator tools.**\n",
    "workflow": {
      "id": "AkcTR8C45GvFGjg3",
      "meta": {
        "instanceId": "a5283507e1917a33cc3ae615b2e7d5ad2c1e50955e6f831272ddd5ab816f3fb6"
      },
      "name": "Tesla Quant Technical Indicators Webhooks Tool n8n",
      "tags": [],
      "nodes": [
        {
          "id": "666ae1df-f6af-42f4-a9b9-9f065dadebf5",
          "name": "MACD 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -2100
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=MACD&symbol=TSLA&interval=15min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "09cdc5db-985b-4383-b207-5d3a4c4c7b43",
          "name": "RSI 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -1920
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=RSI&symbol=TSLA&interval=15min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "1900f4ee-8531-49c4-b993-c3189742631d",
          "name": "BBands 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -1760
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=BBANDS&symbol=TSLA&interval=15min&time_period=20&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "779b3201-bf41-45b7-b397-c7ad8da104e6",
          "name": "SMA 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -1560
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=SMA&symbol=TSLA&interval=15min&time_period=20&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "2ddff936-5d16-4ca3-a6e9-d2be4d1552b1",
          "name": "EMA 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -1380
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=EMA&symbol=TSLA&interval=15min&time_period=12&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "487ee540-198d-4067-a55c-d38cf9f8b5f9",
          "name": "ADX 15min",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            520,
            -1180
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=ADX&symbol=TSLA&interval=15min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "4b465062-273f-4e17-9af2-e3201c43912f",
          "name": "15min Data Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            60,
            -1660
          ],
          "webhookId": "88e83c35-bba7-4ff8-a808-9626ae04b88c",
          "parameters": {
            "path": "88e83c35-bba7-4ff8-a808-9626ae04b88c",
            "options": {},
            "responseMode": "responseNode"
          },
          "typeVersion": 2
        },
        {
          "id": "7bfdce8b-119f-4d4d-9957-336ce4c82fbb",
          "name": "RSI 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            -460
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=RSI&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "5d4dbcb7-cd3b-48a0-a621-ccb5ab4002bb",
          "name": "MACD 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            -660
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=MACD&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "e0c37a9d-e724-426f-a2a1-7ff938e480a2",
          "name": "BBands 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            -260
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=BBANDS&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "fd9bc08f-9db4-404e-9e3d-68a56cef437f",
          "name": "SMA 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            -40
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=SMA&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "31489239-8fc7-47e7-94d4-8a34c24c646a",
          "name": "EMA 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            160
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=EMA&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "35e97546-dc5d-4c30-9b6c-f6751a24c3a7",
          "name": "ADX 1hour",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            -920,
            360
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=ADX&symbol=TSLA&interval=60min&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "655df5a9-0d91-41d1-bdb1-5be5cb97dce4",
          "name": "1hour Data Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            -1440,
            -120
          ],
          "webhookId": "1eb54436-6511-4c6c-8d27-2a6ff8f15411",
          "parameters": {
            "path": "1eb54436-6511-4c6c-8d27-2a6ff8f15411",
            "options": {},
            "responseMode": "responseNode"
          },
          "typeVersion": 2
        },
        {
          "id": "2b732a52-bfeb-486a-84ca-2ecffd6ff622",
          "name": "RSI 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            -580
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=RSI&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "b456f6c4-bdb0-49b2-ba9e-999a3726f43b",
          "name": "MACD 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            -780
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=MACD&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "a8e1a625-a49d-44bc-98e8-d1b3f4a57bfc",
          "name": "BBands 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            -360
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=BBANDS&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "1ed45f01-19d5-4a1c-928a-b0f4456faece",
          "name": "SMA 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            -160
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=SMA&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "2549b6e2-bb0e-433e-b137-f88fa21b39a9",
          "name": "EMA 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            60
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=EMA&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "18dd8937-5936-4915-a617-18629cc32eb8",
          "name": "ADX 1day",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2140,
            280
          ],
          "parameters": {
            "url": "https://www.alphavantage.co/query?function=ADX&symbol=TSLA&interval=daily&time_period=14&series_type=close&entitlement=delayed",
            "options": {},
            "authentication": "genericCredentialType",
            "genericAuthType": "httpQueryAuth"
          },
          "credentials": {
            "httpQueryAuth": {
              "id": "credential-id",
              "name": "httpQueryAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "f593b208-aa5e-42fc-9f7b-b3abd6472de8",
          "name": "1day Data Webhook",
          "type": "n8n-nodes-base.webhook",
          "position": [
            1580,
            -200
          ],
          "webhookId": "65f1d0f0-b165-45e7-9a99-ceb977a9abbf",
          "parameters": {
            "path": "65f1d0f0-b165-45e7-9a99-ceb977a9abbf",
            "options": {},
            "responseMode": "responseNode"
          },
          "typeVersion": 2
        },
        {
          "id": "46cd5f07-970d-42a5-b300-2cd67515be4d",
          "name": "Respond to Webhook 1day Data",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            3360,
            -300
          ],
          "parameters": {
            "options": {},
            "respondWith": "allIncomingItems"
          },
          "typeVersion": 1.2
        },
        {
          "id": "86557d7b-7333-4189-9b06-5cbffd978c81",
          "name": "Respond to Webhook 15min Data",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            1740,
            -1660
          ],
          "parameters": {
            "options": {},
            "respondWith": "allIncomingItems"
          },
          "typeVersion": 1.2
        },
        {
          "id": "82c833de-4a12-4976-b998-129465e80804",
          "name": "Respond to Webhook 1hour Data",
          "type": "n8n-nodes-base.respondToWebhook",
          "position": [
            540,
            -120
          ],
          "parameters": {
            "options": {},
            "respondWith": "allIncomingItems"
          },
          "typeVersion": 1.2
        },
        {
          "id": "c9c62905-a5d2-4af7-bd7d-1d0310e34706",
          "name": "Merge 1hour Indicators",
          "type": "n8n-nodes-base.merge",
          "position": [
            100,
            -180
          ],
          "parameters": {
            "numberInputs": 6
          },
          "typeVersion": 3.1
        },
        {
          "id": "4e2db262-5fbd-43f2-b0e8-5dfff74bd69b",
          "name": "Merge 15 min Indicators",
          "type": "n8n-nodes-base.merge",
          "position": [
            1420,
            -1720
          ],
          "parameters": {
            "numberInputs": 6
          },
          "typeVersion": 3.1
        },
        {
          "id": "32bdda97-56b4-449d-8cc0-9e56f5cb33e7",
          "name": "Merge 1day Indicators",
          "type": "n8n-nodes-base.merge",
          "position": [
            3000,
            -360
          ],
          "parameters": {
            "numberInputs": 6
          },
          "typeVersion": 3.1
        },
        {
          "id": "8c0d9209-786e-4ad8-b76b-0c94a3ffa788",
          "name": "Format Response - MACD 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -2100
          ],
          "parameters": {
            "jsCode": "// Get the MACD data from input\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: MACD\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No MACD data returned.\" } }];\n}\n\n// Extract latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"MACD\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "98fc07c6-d8ac-44a9-95d9-430485febca2",
          "name": "Format Response - RSI 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -1920
          ],
          "parameters": {
            "jsCode": "// Extract RSI data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: RSI\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No RSI data returned.\" } }];\n}\n\n// Trim to latest 20 points\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"RSI\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "2f7d7b00-ef80-4ee4-92e8-50c1707aed0e",
          "name": "Format Response - BBANDS 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -1760
          ],
          "parameters": {
            "jsCode": "// Extract BBANDS data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: BBANDS\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No BBANDS data returned.\" } }];\n}\n\n// Get the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"BBANDS\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "7b214e3c-f725-48eb-98ec-799c60c08216",
          "name": "Format Response - SMA 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -1560
          ],
          "parameters": {
            "jsCode": "// Extract SMA data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: SMA\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No SMA data returned.\" } }];\n}\n\n// Get the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"SMA\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "6f202147-927e-4427-8f99-06fdec6d614d",
          "name": "Format Response - EMA 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -1380
          ],
          "parameters": {
            "jsCode": "// Extract EMA data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: EMA\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No EMA data returned.\" } }];\n}\n\n// Get the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"EMA\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "66147010-c52f-49ea-bca7-a668c38555bd",
          "name": "Format Response - ADX 15min",
          "type": "n8n-nodes-base.code",
          "position": [
            940,
            -1180
          ],
          "parameters": {
            "jsCode": "// Extract ADX data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: ADX\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No ADX data returned.\" } }];\n}\n\n// Get the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\nconst cleaned = Object.fromEntries(latest20);\n\nreturn [{\n  json: {\n    indicator: \"ADX\",\n    timeframe: \"15min\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "fe59f145-09fa-4dbc-9cf8-04b664e58259",
          "name": "Format Response - MACD 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            -660
          ],
          "parameters": {
            "jsCode": "// Extract MACD data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: MACD\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No MACD data returned.\" } }];\n}\n\n// Get the latest 20 timestamp entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Transform into clean format\nconst cleaned = latest20.map(([timestamp, values]) => ({\n  timestamp,\n  macd: parseFloat(values.MACD),\n  signal: parseFloat(values.MACD_Signal),\n  hist: parseFloat(values.MACD_Hist)\n}));\n\nreturn [{\n  json: {\n    indicator: \"MACD\",\n    timeframe: \"1h\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "9e70c5aa-7b6a-4604-bf35-deaafcb31851",
          "name": "Format Response - RSI 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            -460
          ],
          "parameters": {
            "jsCode": "// Extract RSI data from HTTP response\nconst raw = items[0].json;\nconst resultKey = \"Technical Analysis: RSI\";\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: \"No RSI data returned.\" } }];\n}\n\n// Take latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format into simplified array\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  rsi: parseFloat(value.RSI)\n}));\n\nreturn [{\n  json: {\n    indicator: \"RSI\",\n    timeframe: \"1h\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "8647d17c-d2e7-4aaf-a94d-452a7830fe2a",
          "name": "Format Response - BBANDS 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            -260
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: BBANDS';\nconst raw = $json; // This captures the output of the HTTP node\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: `No BBANDS data returned from Alpha Vantage.` } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry cleanly\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  upper: parseFloat(value['Real Upper Band']),\n  middle: parseFloat(value['Real Middle Band']),\n  lower: parseFloat(value['Real Lower Band']),\n}));\n\nreturn [{\n  json: {\n    indicator: 'BBANDS',\n    timeframe: '1h',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "3f3a85aa-409c-4252-8e68-5e9cc1247b0b",
          "name": "Format Response - SMA 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            -40
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: SMA';\nconst raw = $json;\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: `No SMA data returned from Alpha Vantage.` } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry cleanly\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  value: parseFloat(value['SMA']),\n}));\n\nreturn [{\n  json: {\n    indicator: 'SMA',\n    timeframe: '1h',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "f6ae58f3-aad7-4d19-82d6-0e56339eb9ac",
          "name": "Format Response - EMA 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            160
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: EMA';\nconst raw = $json;\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: `No EMA data returned from Alpha Vantage.` } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry cleanly\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  value: parseFloat(value['EMA']),\n}));\n\nreturn [{\n  json: {\n    indicator: 'EMA',\n    timeframe: '1h',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "67ff1f40-6e8f-4cd4-a67b-898687f56e54",
          "name": "Format Response - ADX 1hour",
          "type": "n8n-nodes-base.code",
          "position": [
            -500,
            360
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: ADX';\nconst raw = $json;\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: `No ADX data returned from Alpha Vantage.` } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry cleanly\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  value: parseFloat(value['ADX']),\n}));\n\nreturn [{\n  json: {\n    indicator: 'ADX',\n    timeframe: '1h',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "656ab57a-e8f6-48cc-8ebd-3ffe869eefbd",
          "name": "Format Response - MACD 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            -780
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: MACD';\nconst raw = $json;\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: `No MACD data returned from Alpha Vantage.` } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry cleanly\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  macd: parseFloat(value.MACD),\n  macdSignal: parseFloat(value.MACD_Signal),\n  macdHist: parseFloat(value.MACD_Hist),\n}));\n\nreturn [{\n  json: {\n    indicator: 'MACD',\n    timeframe: '1d',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "eebab549-07fc-474c-86ae-bd39651cf3c3",
          "name": "Format Response - RSI 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            -580
          ],
          "parameters": {
            "jsCode": "const resultKey = 'Technical Analysis: RSI';\nconst raw = $json;\nconst data = raw[resultKey];\n\nif (!data) {\n  return [{ json: { error: 'No RSI data returned from Alpha Vantage.' } }];\n}\n\n// Extract the latest 20 entries\nconst latest20 = Object.entries(data).slice(0, 20);\n\n// Format each entry\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  rsi: parseFloat(value.RSI),\n}));\n\nreturn [{\n  json: {\n    indicator: 'RSI',\n    timeframe: '1d',\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "66755c9a-c829-42ef-8b3a-3fa4df8d2a6e",
          "name": "Format Response - BBANDS 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            -360
          ],
          "parameters": {
            "jsCode": "const raw = $json[\"Technical Analysis: BBANDS\"];\n\nif (!raw) {\n  return [{ json: { error: \"No BBANDS data returned from Alpha Vantage.\" } }];\n}\n\nconst latest20 = Object.entries(raw).slice(0, 20);\n\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  upper: parseFloat(value[\"Real Upper Band\"]) || null,\n  middle: parseFloat(value[\"Real Middle Band\"]) || null,\n  lower: parseFloat(value[\"Real Lower Band\"]) || null,\n}));\n\nreturn [{\n  json: {\n    indicator: \"BBANDS\",\n    timeframe: \"1d\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "2c21751d-a91c-4d35-bb26-9170e14c25aa",
          "name": "Format Response - SMA 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            -160
          ],
          "parameters": {
            "jsCode": "const raw = $json[\"Technical Analysis: SMA\"];\n\nif (!raw) {\n  return [{ json: { error: \"No SMA data returned from Alpha Vantage.\" } }];\n}\n\n// Get the latest 20 data points\nconst latest20 = Object.entries(raw).slice(0, 20);\n\n// Clean and format each entry\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  sma: parseFloat(value.SMA) || null\n}));\n\nreturn [{\n  json: {\n    indicator: \"SMA\",\n    timeframe: \"1d\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "e50c1d0b-e5f0-4622-a350-1843c4fea180",
          "name": "Format Response - EMA 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            60
          ],
          "parameters": {
            "jsCode": "const raw = $json[\"Technical Analysis: EMA\"];\n\nif (!raw) {\n  return [{ json: { error: \"No EMA data returned from Alpha Vantage.\" } }];\n}\n\n// Extract and clean last 20 entries\nconst latest20 = Object.entries(raw).slice(0, 20);\n\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  ema: parseFloat(value.EMA) || null\n}));\n\nreturn [{\n  json: {\n    indicator: \"EMA\",\n    timeframe: \"1d\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "d620600d-1450-4aec-ac38-3bff733eacf6",
          "name": "Format Response - ADX 1day",
          "type": "n8n-nodes-base.code",
          "position": [
            2520,
            280
          ],
          "parameters": {
            "jsCode": "const raw = $json[\"Technical Analysis: ADX\"];\n\nif (!raw) {\n  return [{ json: { error: \"No ADX data returned from Alpha Vantage.\" } }];\n}\n\nconst latest20 = Object.entries(raw).slice(0, 20);\n\nconst cleaned = latest20.map(([timestamp, value]) => ({\n  timestamp,\n  adx: parseFloat(value.ADX) || null\n}));\n\nreturn [{\n  json: {\n    indicator: \"ADX\",\n    timeframe: \"1d\",\n    data: cleaned\n  }\n}];"
          },
          "typeVersion": 2
        },
        {
          "id": "7e58c620-1988-4ae7-89ca-55d7b201c842",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1500,
            -700
          ],
          "parameters": {
            "color": 4,
            "height": 700,
            "content": "## Webhooks (1dayData)\n\n• **Entry point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "37c8a591-5aa1-49b2-bd87-0efdbba4aa62",
          "name": "Sticky Note1",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            0,
            -2160
          ],
          "parameters": {
            "color": 4,
            "height": 680,
            "content": "## Webhooks (15minData)\n\n• **Entry point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "e2df7338-6357-4908-8c16-48dcfed20963",
          "name": "Sticky Note2",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1520,
            -620
          ],
          "parameters": {
            "color": 4,
            "height": 680,
            "content": "## Webhooks (1hourData)\n\n• **Entry point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "f4046d64-d579-4c19-b596-c2d535dddf4f",
          "name": "Sticky Note3",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            460,
            -580
          ],
          "parameters": {
            "color": 4,
            "width": 260,
            "height": 640,
            "content": "## Webhooks Respond (1hourData)\n\n• **Exit point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "f4c94214-345e-45fc-acd4-8f3a691badf6",
          "name": "Sticky Note4",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1660,
            -2100
          ],
          "parameters": {
            "color": 4,
            "width": 280,
            "height": 640,
            "content": "## Webhooks Respond (15minData)\n\n• **Exit point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "4c1b8bef-f190-48e9-bc53-25638296ff77",
          "name": "Sticky Note5",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3280,
            -760
          ],
          "parameters": {
            "color": 4,
            "width": 260,
            "height": 660,
            "content": "## Webhooks Respond (1dayData)\n\n• **Exit point** for external workflows calling indicator batches\n\n• Orchestrates trigger for **indicator API pull + formatter nodes**\n\n• Returns **cleaned batch** back via Respond to Webhook node\n\n📎 Notes:\n\n• Must pass through correct **webhook** path\n\n• Responds after **merge with all 6 formatted outputs** per timeframe"
          },
          "typeVersion": 1
        },
        {
          "id": "48955bf1-2028-41b0-95ce-b2295336fe7f",
          "name": "Sticky Note6",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2060,
            -1380
          ],
          "parameters": {
            "color": 6,
            "width": 260,
            "height": 1900,
            "content": "## Alpha Vantage API Calls 1d \n\n• Triggers **Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**\n\n• Covers **1-day intervals for TSLA**\n\n• Called via dedicated **webhook endpoints** per timeframe\n\n• Data returned in **Alpha Vantage’s JSON schema**\n\n📎 Notes:\n\n• **Authentication** handled via **httpQueryAuth**\n\n• Each node pulls and returns **raw API data** for formatting"
          },
          "typeVersion": 1
        },
        {
          "id": "4d640d80-7359-4c9d-99a1-f1a3ec49aa73",
          "name": "Sticky Note7",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2440,
            -1380
          ],
          "parameters": {
            "color": 2,
            "width": 260,
            "height": 1900,
            "content": "## Format Response Nodes (JSON Cleaners) \n\n• **Parses and extracts** the latest **20 data points per indicator**\n\n• Removes excess **metadata and reformats output as:\n json  { indicator, timeframe, data }**  \n\n• Ensures consistent **downstream format for merge and reasoning**\n\n📎 Notes:\n\n• **Format logic** is customized per indicator\n\n• Essential for **standardizing multi-timeframe data ingestion**"
          },
          "typeVersion": 1
        },
        {
          "id": "384390dd-7fb7-46d6-96de-b3cf1e94023b",
          "name": "Sticky Note8",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            440,
            -2680
          ],
          "parameters": {
            "color": 6,
            "width": 260,
            "height": 1760,
            "content": "## Alpha Vantage API Calls 15m \n\n• Triggers **Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**\n\n• Covers **15-minute intervals for TSLA**\n\n• Called via dedicated **webhook endpoints** per timeframe\n\n• Data returned in **Alpha Vantage’s JSON schema**\n\n📎 Notes:\n\n• **Authentication** handled via **httpQueryAuth**\n\n• Each node pulls and returns **raw API data** for formatting"
          },
          "typeVersion": 1
        },
        {
          "id": "45e8abfd-1612-4569-843b-d0e5aab87815",
          "name": "Sticky Note9",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            860,
            -2680
          ],
          "parameters": {
            "color": 2,
            "width": 260,
            "height": 1760,
            "content": "## Format Response Nodes (JSON Cleaners) \n\n• **Parses and extracts** the latest **20 data points per indicator**\n\n• Removes excess **metadata and reformats output as:\n json  { indicator, timeframe, data }**  \n\n• Ensures consistent **downstream format for merge and reasoning**\n\n📎 Notes:\n\n• **Format logic** is customized per indicator\n\n• Essential for **standardizing multi-timeframe data ingestion**"
          },
          "typeVersion": 1
        },
        {
          "id": "dba61599-047c-45e1-8dff-72d2fca3cd6b",
          "name": "Sticky Note10",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -580,
            -1260
          ],
          "parameters": {
            "color": 2,
            "width": 260,
            "height": 1860,
            "content": "## Format Response Nodes (JSON Cleaners) \n\n• **Parses and extracts** the latest **20 data points per indicator**\n\n• Removes excess **metadata and reformats output as:\n json  { indicator, timeframe, data }**  \n\n• Ensures consistent **downstream format for merge and reasoning**\n\n📎 Notes:\n\n• **Format logic** is customized per indicator\n\n• Essential for **standardizing multi-timeframe data ingestion**"
          },
          "typeVersion": 1
        },
        {
          "id": "845c6359-0e9e-438f-bbdb-3566dee64c94",
          "name": "Sticky Note11",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1000,
            -1260
          ],
          "parameters": {
            "color": 6,
            "width": 260,
            "height": 1860,
            "content": "## Alpha Vantage API Calls 1h \n\n• Triggers **Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**\n\n• Covers **1-hour intervals for TSLA**\n\n• Called via dedicated **webhook endpoints** per timeframe\n\n• Data returned in **Alpha Vantage’s JSON schema**\n\n📎 Notes:\n\n• **Authentication** handled via **httpQueryAuth**\n\n• Each node pulls and returns **raw API data** for formatting"
          },
          "typeVersion": 1
        },
        {
          "id": "a55c9d0b-e45f-4012-8e59-8236a033f8cb",
          "name": "Sticky Note12",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            1340,
            -1980
          ],
          "parameters": {
            "color": 5,
            "width": 260,
            "height": 620,
            "content": "## Technical Indicator API Merge \n\n**Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**"
          },
          "typeVersion": 1
        },
        {
          "id": "a74523af-432b-4ee9-8e40-8c5846c8f6af",
          "name": "Sticky Note13",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            20,
            -440
          ],
          "parameters": {
            "color": 5,
            "width": 260,
            "height": 620,
            "content": "## Technical Indicator API Merge \n\n**Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**"
          },
          "typeVersion": 1
        },
        {
          "id": "634cf6ed-2231-4f99-bc1b-7dbe92d9a1d3",
          "name": "Sticky Note14",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            2920,
            -660
          ],
          "parameters": {
            "color": 5,
            "width": 260,
            "height": 660,
            "content": "## Technical Indicator API Merge \n\n**Alpha Vantage Premium API** for 6 indicators:\n\n• **RSI, MACD, BBANDS, SMA, EMA, ADX**"
          },
          "typeVersion": 1
        },
        {
          "id": "bf8ac533-da8a-4e8e-a3cb-5f89d8c85e1f",
          "name": "Sticky Note15",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            3700,
            -2000
          ],
          "parameters": {
            "width": 1800,
            "height": 2520,
            "content": "## 📘 Tesla Quant Technical Indicators Webhooks Tool\n\n### 🔧 Purpose:\n\nThis workflow acts as the **central API data fetcher** for all Tesla technical indicators across **three timeframes**:\n👉 `15min`, `1hour`, and `1day`\n\nIt triggers and formats 6 Alpha Vantage indicators per timeframe and returns a clean, standardized JSON output used by downstream AI analyst tools.\n\n---\n\n### 🧱 Covered Indicators (per timeframe):\n\n* **RSI** – Relative Strength Index\n* **MACD** – Moving Average Convergence Divergence\n* **BBANDS** – Bollinger Bands\n* **SMA** – Simple Moving Average\n* **EMA** – Exponential Moving Average\n* **ADX** – Average Directional Index\n\n---\n\n### 📂 Required Dependencies (to use this workflow):\n\n* ✅ **Alpha Vantage Premium API Key** – Registered in n8n as a Credential\n* ✅ Any of the following parent workflows:\n\n  * Tesla Financial Market Data Analyst Tool\n  * Tesla 15min / 1h / 1d Indicators Tool\n\n---\n\n### 🛠️ Step-by-Step Installation:\n\n1. **Import Workflow**\n\n   * Load this JSON into your n8n instance as a standalone workflow.\n\n2. **Setup Alpha Vantage Credential**\n\n   * Go to **Credentials** in n8n.\n   * Add a new **HTTP Query Auth** credential named:\n     `Alpha Vantage Premium`\n   * Set key to `apikey` and add your actual premium Alpha Vantage token.\n\n3. **Connect to Caller**\n\n   * This tool exposes **3 webhook endpoints**:\n\n     * `/15minData`\n     * `/1hourData`\n     * `/1dayData`\n\n   These must be triggered by other workflows. When called, they:\n\n   * Pull all 6 indicators\n   * Format them into cleaned JSON (`indicator`, `timeframe`, `data`)\n   * Merge into a single object per timeframe\n   * Return via Respond to Webhook node\n\n4. **Verify Outputs**\n   Example response:\n\n   ```json\n   {\n     \"indicator\": \"RSI\",\n     \"timeframe\": \"1h\",\n     \"data\": {\n       \"2025-05-15 14:00\": \"58.42\",\n       ...\n     }\n   }\n   ```\n\n---\n\n### 🧠 Internal Architecture\n\nEach timeframe (15min, 1h, 1d) has:\n\n* ✅ 6 HTTP Request Nodes\n* ✅ 6 Formatter Code Nodes (latest 20 values)\n* ✅ Merge Node (combines results)\n* ✅ Webhook In Node (entry point)\n* ✅ Webhook Respond Node (exit to parent)\n\nSticky notes in n8n are standardized as:\n\n| Section         | Color  | Description                              |\n| --------------- | ------ | ---------------------------------------- |\n| Webhook Entry   | Blue   | Explains triggering path                 |\n| API Calls       | Yellow | Lists all HTTP indicator fetch nodes     |\n| Format Nodes    | Purple | Cleans & structures Alpha Vantage output |\n| Merge Nodes     | Green  | Final JSON merge of indicator array      |\n| Webhook Respond | Blue   | Returns JSON back to caller              |\n\n---\n\n### 🧩 Compatible Timeframes\n\n| Webhook Path | Used In                     |\n| ------------ | --------------------------- |\n| `/15minData` | Tesla 15min Indicators Tool |\n| `/1hourData` | Tesla 1hour Indicators Tool |\n| `/1dayData`  | Tesla 1day Indicators Tool  |\n\n---\n\n## 🚀 Support & Licensing\n\n🔗 **Don Jayamaha – LinkedIn**\n[http://linkedin.com/in/donjayamahajr](http://linkedin.com/in/donjayamahajr)\n\n© 2025 Treasurium Capital Limited Company. All rights reserved.\nThis AI workflow architecture, including logic, design, and prompt structures, is the intellectual property of Treasurium Capital Limited Company. Unauthorized reproduction, redistribution, or resale is prohibited under U.S. copyright law. Licensed use only.\n\n"
          },
          "typeVersion": 1
        }
      ],
      "active": false,
      "pinData": {},
      "settings": {
        "executionOrder": "v1"
      },
      "versionId": "5492ea23-51d6-4c57-bccf-786739f5f4b0",
      "connections": {
        "ADX 1day": {
          "main": [
            [
              {
                "node": "Format Response - ADX 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "EMA 1day": {
          "main": [
            [
              {
                "node": "Format Response - EMA 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "RSI 1day": {
          "main": [
            [
              {
                "node": "Format Response - RSI 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "SMA 1day": {
          "main": [
            [
              {
                "node": "Format Response - SMA 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "ADX 15min": {
          "main": [
            [
              {
                "node": "Format Response - ADX 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "ADX 1hour": {
          "main": [
            [
              {
                "node": "Format Response - ADX 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "EMA 15min": {
          "main": [
            [
              {
                "node": "Format Response - EMA 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "EMA 1hour": {
          "main": [
            [
              {
                "node": "Format Response - EMA 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "MACD 1day": {
          "main": [
            [
              {
                "node": "Format Response - MACD 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "RSI 15min": {
          "main": [
            [
              {
                "node": "Format Response - RSI 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "RSI 1hour": {
          "main": [
            [
              {
                "node": "Format Response - RSI 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "SMA 15min": {
          "main": [
            [
              {
                "node": "Format Response - SMA 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "SMA 1hour": {
          "main": [
            [
              {
                "node": "Format Response - SMA 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "MACD 15min": {
          "main": [
            [
              {
                "node": "Format Response - MACD 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "MACD 1hour": {
          "main": [
            [
              {
                "node": "Format Response - MACD 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "BBands 1day": {
          "main": [
            [
              {
                "node": "Format Response - BBANDS 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "BBands 15min": {
          "main": [
            [
              {
                "node": "Format Response - BBANDS 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "BBands 1hour": {
          "main": [
            [
              {
                "node": "Format Response - BBANDS 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "1day Data Webhook": {
          "main": [
            [
              {
                "node": "MACD 1day",
                "type": "main",
                "index": 0
              },
              {
                "node": "RSI 1day",
                "type": "main",
                "index": 0
              },
              {
                "node": "BBands 1day",
                "type": "main",
                "index": 0
              },
              {
                "node": "SMA 1day",
                "type": "main",
                "index": 0
              },
              {
                "node": "EMA 1day",
                "type": "main",
                "index": 0
              },
              {
                "node": "ADX 1day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "15min Data Webhook": {
          "main": [
            [
              {
                "node": "MACD 15min",
                "type": "main",
                "index": 0
              },
              {
                "node": "RSI 15min",
                "type": "main",
                "index": 0
              },
              {
                "node": "BBands 15min",
                "type": "main",
                "index": 0
              },
              {
                "node": "SMA 15min",
                "type": "main",
                "index": 0
              },
              {
                "node": "EMA 15min",
                "type": "main",
                "index": 0
              },
              {
                "node": "ADX 15min",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "1hour Data Webhook": {
          "main": [
            [
              {
                "node": "MACD 1hour",
                "type": "main",
                "index": 0
              },
              {
                "node": "RSI 1hour",
                "type": "main",
                "index": 0
              },
              {
                "node": "BBands 1hour",
                "type": "main",
                "index": 0
              },
              {
                "node": "SMA 1hour",
                "type": "main",
                "index": 0
              },
              {
                "node": "EMA 1hour",
                "type": "main",
                "index": 0
              },
              {
                "node": "ADX 1hour",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge 1day Indicators": {
          "main": [
            [
              {
                "node": "Respond to Webhook 1day Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge 1hour Indicators": {
          "main": [
            [
              {
                "node": "Respond to Webhook 1hour Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Merge 15 min Indicators": {
          "main": [
            [
              {
                "node": "Respond to Webhook 15min Data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Response - ADX 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 5
              }
            ]
          ]
        },
        "Format Response - EMA 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 4
              }
            ]
          ]
        },
        "Format Response - RSI 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Format Response - SMA 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 3
              }
            ]
          ]
        },
        "Format Response - ADX 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 5
              }
            ]
          ]
        },
        "Format Response - ADX 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 5
              }
            ]
          ]
        },
        "Format Response - EMA 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 4
              }
            ]
          ]
        },
        "Format Response - EMA 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 4
              }
            ]
          ]
        },
        "Format Response - MACD 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Response - RSI 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Format Response - RSI 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 1
              }
            ]
          ]
        },
        "Format Response - SMA 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 3
              }
            ]
          ]
        },
        "Format Response - SMA 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 3
              }
            ]
          ]
        },
        "Format Response - MACD 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Response - MACD 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Response - BBANDS 1day": {
          "main": [
            [
              {
                "node": "Merge 1day Indicators",
                "type": "main",
                "index": 2
              }
            ]
          ]
        },
        "Format Response - BBANDS 15min": {
          "main": [
            [
              {
                "node": "Merge 15 min Indicators",
                "type": "main",
                "index": 2
              }
            ]
          ]
        },
        "Format Response - BBANDS 1hour": {
          "main": [
            [
              {
                "node": "Merge 1hour Indicators",
                "type": "main",
                "index": 2
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 61,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 18
        },
        "n8n-nodes-base.merge": {
          "count": 3
        },
        "n8n-nodes-base.webhook": {
          "count": 3
        },
        "n8n-nodes-base.stickyNote": {
          "count": 16
        },
        "n8n-nodes-base.httpRequest": {
          "count": 18
        },
        "n8n-nodes-base.respondToWebhook": {
          "count": 3
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Don Jayamaha Jr",
      "username": "don-the-gem-dealer",
      "bio": "With 12 years of experience as a Blockchain Strategist and Web3 Architect, I specialize in bridging the gap between traditional industries and decentralized technologies. My expertise spans tokenized assets, crypto payment integrations, and blockchain-driven market solutions.",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/donjayamahajr/"
      ],
      "avatar": "https://gravatar.com/avatar/95f70084b3fec5ed68a61eef6dc6128dfb085d865a02ed631d0853d2730696bf?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 19,
        "icon": "file:httprequest.svg",
        "name": "n8n-nodes-base.httpRequest",
        "codex": {
          "data": {
            "alias": [
              "API",
              "Request",
              "URL",
              "Build",
              "cURL"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/",
                  "icon": "☀️",
                  "label": "2021: The Year to Automate the New You with n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/",
                  "icon": "📈",
                  "label": "Automatically pulling and visualizing data with n8n"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/world-poetry-day-workflow/",
                  "icon": "📜",
                  "label": "Celebrating World Poetry Day with a daily poem in Telegram"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/",
                  "icon": "🎨",
                  "label": "Automate Designs with Bannerbear and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/",
                  "icon": "📱",
                  "label": "Building an expense tracking app in 10 minutes"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/",
                  "icon": "🧰",
                  "label": "How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/",
                  "icon": "📈",
                  "label": "A low-code bitcoin ticker built with QuestDB and n8n.io"
                },
                {
                  "url": "https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/",
                  "icon": "🎡",
                  "label": "How to set up a no-code CI/CD pipeline with GitHub and TravisCI"
                },
                {
                  "url": "https://n8n.io/blog/automations-for-activists/",
                  "icon": "✨",
                  "label": "How Common Knowledge use workflow automation for activism"
                },
                {
                  "url": "https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/",
                  "icon": "🤟",
                  "label": "Creating scheduled text affirmations with n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"output\"]",
        "defaults": {
          "name": "HTTP Request",
          "color": "#0004F5"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="
        },
        "displayName": "HTTP Request",
        "typeVersion": 4,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 24,
        "icon": "file:merge.svg",
        "name": "n8n-nodes-base.merge",
        "codex": {
          "data": {
            "alias": [
              "Join",
              "Concatenate",
              "Wait"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-to-sync-data-between-two-systems/",
                  "icon": "🏬",
                  "label": "How to synchronize data between two systems (one-way vs. two-way sync"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/",
                  "icon": "👦",
                  "label": "Build your own virtual assistant with n8n: A step by step guide"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Merge"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Merge",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 47,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.webhook",
        "codex": {
          "data": {
            "alias": [
              "HTTP",
              "API",
              "Build",
              "WH"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/",
                  "icon": "✍️",
                  "label": "Learn how to automatically cross-post your content with n8n"
                },
                {
                  "url": "https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/",
                  "icon": "🛳",
                  "label": "Running n8n on ships: An interview with Maranics"
                },
                {
                  "url": "https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/",
                  "icon": "🔗",
                  "label": "How to build a low-code, self-hosted URL shortener in 3 steps"
                },
                {
                  "url": "https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/",
                  "icon": " 🪢",
                  "label": "What are APIs and how to use them with no code"
                },
                {
                  "url": "https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/",
                  "icon": "⚡️",
                  "label": "5 tasks you can automate with the new Notion API "
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/",
                  "icon": "📹",
                  "label": "The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/",
                  "icon": "👏",
                  "label": "How to automatically give kudos to contributors with GitHub, Slack, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/",
                  "icon": "🤖",
                  "label": "5 workflow automations for Mattermost that we love at n8n"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/",
                  "label": "How to automate every step of an incident response workflow"
                },
                {
                  "url": "https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/",
                  "icon": "🧰",
                  "label": "Learn to Build Powerful API Endpoints Using Webhooks"
                },
                {
                  "url": "https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/",
                  "icon": "🦄",
                  "label": "Learn how to use webhooks with Mattermost slash commands"
                },
                {
                  "url": "https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/",
                  "icon": "🛵",
                  "label": "How Goomer automated their operations with over 200 n8n workflows"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 535,
        "icon": "file:webhook.svg",
        "name": "n8n-nodes-base.respondToWebhook",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"
                }
              ]
            },
            "categories": [
              "Core Nodes",
              "Utility"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Respond to Webhook"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"
        },
        "displayName": "Respond to Webhook",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 7,
            "name": "Utility"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 44,
        "name": "Crypto Trading"
      }
    ],
    "image": []
  }
}