{
  "name": "Portarus Starter",
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateId": "portarus-starter-v1",
    "templateCredsSetupCompleted": false
  },
  "tags": [],
  "nodes": [
    {
      "id": "sticky_intro",
      "name": "README — read me first",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-680, -220],
      "parameters": {
        "color": 7,
        "width": 500,
        "height": 360,
        "content": "## 🛡️ Portarus Starter\n\nReceive the clean, unified message from Portarus and hand it off to your workflow.\n\n### Setup\n1. **Secret / Header Auth** — in the webhook node → *Authentication → Header Auth* → credential with **Header Name** `Authorization` and **Value** `Bearer <secret from Portarus>`. Templates ship **without** credentials by design.\n2. **Activate**, copy the webhook **Production URL**, paste it into the Portarus *Destination URL* field.\n\n### Where things live\n- Final message text → `{{ $json.body._portarus.message }}` (already unified)\n- Did Portarus run → `_portarus.status.processed`\n- Security verdict → `_portarus.security.result`"
      }
    },
    {
      "id": "sticky_a",
      "name": "Recipe — header",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [-120, -300],
      "parameters": {
        "color": 4,
        "width": 900,
        "height": 80,
        "content": "## Drop-in — receive → ack → hand off to the workflow you already have."
      }
    },
    {
      "id": "webhook_a",
      "name": "Portarus Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [0, 0],
      "webhookId": "portarus-dropin",
      "parameters": {
        "httpMethod": "POST",
        "path": "portarus",
        "authentication": "headerAuth",
        "responseMode": "responseNode",
        "options": { "rawBody": false }
      }
    },
    {
      "id": "ack_a",
      "name": "Ack 200 (fast)",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [0, -200],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { \"received\": true, \"trace_id\": $json.body._portarus.meta.trace_id } }}",
        "options": { "responseCode": 200 }
      }
    },
    {
      "id": "current_a",
      "name": "→ Your current process",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [360, 0],
      "parameters": {}
    },
    {
      "id": "sticky_a_current",
      "name": "Current process",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [320, 140],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 180,
        "content": "### ⬅️ Connect your existing workflow here\n**If you already have an agent:** nothing breaks. Wire this into the start of your current flow and it keeps working exactly as before — Portarus just hands it a cleaner `_portarus.message`.\n\n**If you're new:** build your agent starting from this node."
      }
    }
  ],
  "connections": {
    "Portarus Webhook": {
      "main": [
        [
          { "node": "Ack 200 (fast)", "type": "main", "index": 0 },
          { "node": "→ Your current process", "type": "main", "index": 0 }
        ]
      ]
    }
  }
}
