{
  "name": "PROD_03_Trading_Signal_Workflow",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "trading-signal",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "1",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "1",
              "name": "signal_type",
              "value": "{{ $json.body.signal_type }}",
              "type": "string"
            },
            {
              "id": "2",
              "name": "symbol",
              "value": "{{ $json.body.symbol }}",
              "type": "string"
            },
            {
              "id": "3",
              "name": "action",
              "value": "{{ $json.body.action }}",
              "type": "string"
            },
            {
              "id": "4",
              "name": "timestamp",
              "value": "{{ $now }}",
              "type": "string"
            }
          ]
        }
      },
      "id": "2",
      "name": "InitData",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// Trading signal validation\nconst signal = $input.first().json;\nconst validSignals = ['BUY', 'SELL', 'HOLD'];\n\nif (!validSignals.includes(signal.action)) {\n  throw new Error('Invalid signal action');\n}\n\nsignal.validated = true;\nsignal.validation_time = new Date().toISOString();\n\nreturn signal;"
      },
      "id": "3",
      "name": "Validate_Signal",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.example.com/trading/signals",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "signal",
              "value": "={{ JSON.stringify($json) }}"
            }
          ]
        },
        "options": {}
      },
      "id": "4",
      "name": "Send_To_Trading_API",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        850,
        300
      ]
    },
    {
      "parameters": {
        "to": "trading_alerts",
        "text": "={{ 'Trading Signal: ' + $json.symbol + ' | Action: ' + $json.action + ' | Type: ' + $json.signal_type }}",
        "additionalFields": {}
      },
      "id": "5",
      "name": "Telegram_Alert",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1,
      "position": [
        1050,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "InitData",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "InitData": {
      "main": [
        [
          {
            "node": "Validate_Signal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate_Signal": {
      "main": [
        [
          {
            "node": "Send_To_Trading_API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send_To_Trading_API": {
      "main": [
        [
          {
            "node": "Telegram_Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "prod-03-v1",
  "id": "PROD03TRADINGSIGNAL",
  "tags": [
    {
      "name": "production"
    },
    {
      "name": "trading"
    }
  ]
}