{
  "flows": [
    {
      "id": "flow1",
      "name": "Stocks Display",
      "nodes": [
        {
          "id": "http_aapl",
          "type": "http request",
          "name": "Get AAPL",
          "method": "GET",
          "url": "https://query1.finance.yahoo.com/v7/finance/quote?symbols=AAPL",
          "interval": 300,
          "outputs": ["func_aapl"]
        },
        {
          "id": "func_aapl",
          "type": "function",
          "name": "Format AAPL",
          "script": "let data = JSON.parse(msg.payload);\nlet price = data.quoteResponse.result[0].regularMarketPrice;\nlet change = data.quoteResponse.result[0].regularMarketChangePercent.toFixed(2);\nlet color = change >= 0 ? '00FF00' : 'FF0000';\nmsg.payload = {text: `AAPL ${change >= 0 ? '+' : ''}${change}%`, color: color, duration: 10, icon: 'chart'};\nreturn msg;",
          "outputs": ["display_aapl"]
        },
        {
          "id": "display_aapl",
          "type": "awtrix display",
          "name": "Show AAPL",
          "outputs": []
        },

        {
          "id": "http_tsla",
          "type": "http request",
          "name": "Get TSLA",
          "method": "GET",
          "url": "https://query1.finance.yahoo.com/v7/finance/quote?symbols=TSLA",
          "interval": 300,
          "outputs": ["func_tsla"]
        },
        {
          "id": "func_tsla",
          "type": "function",
          "name": "Format TSLA",
          "script": "let data = JSON.parse(msg.payload);\nlet price = data.quoteResponse.result[0].regularMarketPrice;\nlet change = data.quoteResponse.result[0].regularMarketChangePercent.toFixed(2);\nlet color = change >= 0 ? '00FF00' : 'FF0000';\nmsg.payload = {text: `TSLA ${change >= 0 ? '+' : ''}${change}%`, color: color, duration: 10, icon: 'chart'};\nreturn msg;",
          "outputs": ["display_tsla"]
        },
        {
          "id": "display_tsla",
          "type": "awtrix display",
          "name": "Show TSLA",
          "outputs": []
        },

        {
          "id": "http_nvda",
          "type": "http request",
          "name": "Get NVDA",
          "method": "GET",
          "url": "https://query1.finance.yahoo.com/v7/finance/quote?symbols=NVDA",
          "interval": 300,
          "outputs": ["func_nvda"]
        },
        {
          "id": "func_nvda",
          "type": "function",
          "name": "Format NVDA",
          "script": "let data = JSON.parse(msg.payload);\nlet price = data.quoteResponse.result[0].regularMarketPrice;\nlet change = data.quoteResponse.result[0].regularMarketChangePercent.toFixed(2);\nlet color = change >= 0 ? '00FF00' : 'FF0000';\nmsg.payload = {text: `NVDA ${change >= 0 ? '+' : ''}${change}%`, color: color, duration: 10, icon: 'chart'};\nreturn msg;",
          "outputs": ["display_nvda"]
        },
        {
          "id": "display_nvda",
          "type": "awtrix display",
          "name": "Show NVDA",
          "outputs": []
        },

        {
          "id": "http_spy",
          "type": "http request",
          "name": "Get SPY",
          "method": "GET",
          "url": "https://query1.finance.yahoo.com/v7/finance/quote?symbols=SPY",
          "interval": 300,
          "outputs": ["func_spy"]
        },
        {
          "id": "func_spy",
          "type": "function",
          "name": "Format SPY",
          "script": "let data = JSON.parse(msg.payload);\nlet price = data.quoteResponse.result[0].regularMarketPrice;\nlet change = data.quoteResponse.result[0].regularMarketChangePercent.toFixed(2);\nlet color = change >= 0 ? '00FF00' : 'FF0000';\nmsg.payload = {text: `SPY ${change >= 0 ? '+' : ''}${change}%`, color: color, duration: 10, icon: 'chart'};\nreturn msg;",
          "outputs": ["display_spy"]
        },
        {
          "id": "display_spy",
          "type": "awtrix display",
          "name": "Show SPY",
          "outputs": []
        }
      ]
    }
  ]
}