{
  "name": "Rapid ETL: HTTP -> Transform -> Deliver",
  "nodes": [
    {
      "id": "mtr-0001",
      "name": "Notas & Testes",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        80
      ],
      "parameters": {
        "color": 7,
        "width": 760,
        "height": 360,
        "content": "## Template: ETL Rápido (HTTP → Transform → Entregar)\n\n- Objetivo: Ingerir dados de uma API, transformar e enviar em lote.\n- Teste rápido: execute manualmente no Editor.\n- Fonte demo: jsonplaceholder.typicode.com/posts.\n- Entrega demo: httpbin.org/post (eco).\n- Produção: substitua 'Upsert Endpoint' pelo seu DB/API (Sheets, Postgres, etc.)."
      },
      "typeVersion": 1
    },
    {
      "id": "mtr-0002",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        200,
        280
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "mtr-0003",
      "name": "Fetch Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        460,
        280
      ],
      "parameters": {
        "url": "https://jsonplaceholder.typicode.com/posts",
        "method": "GET",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "mtr-0004",
      "name": "Transform",
      "type": "n8n-nodes-base.function",
      "position": [
        720,
        280
      ],
      "parameters": {
        "functionCode": "// Keep top 10 posts and map fields\nconst data = Array.isArray(items[0].json) ? items[0].json : [];\nreturn data.slice(0, 10).map(post => ({ json: { id: post.id, title: post.title, userId: post.userId } }));"
      },
      "typeVersion": 2
    },
    {
      "id": "mtr-0005",
      "name": "Upsert Endpoint",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        980,
        280
      ],
      "parameters": {
        "url": "https://httpbin.org/post",
        "method": "POST",
        "specifyBody": "json",
        "sendBody": true,
        "jsonBody": "={{ $json }}",
        "options": {
          "retryOnFail": true,
          "maxRetries": 2
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "7210e937-7e08-5f94-85e7-16c5c9af3843",
      "name": "Publication · Overview and setup",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -960,
        0
      ],
      "parameters": {
        "content": "# Rapid ETL: HTTP -> Transform -> Deliver\n\n## Purpose and structure\nThis folder contains the **Rapid ETL: HTTP -> Transform -> Deliver** workflow. Its executable nodes use `function`, `httpRequest`, `manualTrigger`. The table and connection map below are derived from the JSON, not an inferred guarantee of behavior.\n\n## Setup\nImport inactive. Configure your own credentials and replace REPLACE_WITH_* values. Review external destinations and Code nodes before running.\n\n## Entry points\nManual Trigger\n\n## Verification\nSanitized source candidate; not runtime-tested. This overview is generated from node metadata. Read the folder README for the connection map, credential types, and license.\n\n## Attribution\nhttps://github.com/Zie619/n8n-workflows/blob/94007c1445d9258a7da116646b79473e7c7c3282/workflows/Templates/9002_Rapid_ETL_HTTP_Transform_Deliver_Manual.json\nMIT; preserve source notices.",
        "width": 700,
        "height": 800,
        "color": 1
      }
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Fetch Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Data": {
      "main": [
        [
          {
            "node": "Transform",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform": {
      "main": [
        [
          {
            "node": "Upsert Endpoint",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false
}
