{
  "id": 1,
  "name": "Create Nextcloud Deck card from email",
  "nodes": [
    {
      "id": "trigger-73b74633",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        100,
        100
      ],
      "parameters": {}
    },
    {
      "name": "IMAP Email",
      "type": "n8n-nodes-base.emailReadImap",
      "notes": "Check email",
      "position": [
        480,
        140
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "imap": {
          "id": "{{ $credentials.imap.id }}",
          "name": "todo@yourdomain.com"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1,
      "id": "node-551d7bd1"
    },
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "notes": "Strip HTML code",
      "position": [
        730,
        140
      ],
      "parameters": {
        "functionCode": "// Code here will run only once, no matter how many input items there are.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.function\n\n// Loop over inputs and add a new field called 'myNewField' to the JSON of each one\nfor (item of items) {\n  if (item.json.textHtml) {\n    // Remove HTML, double quotations, line breaks, carriage returns\n    item.json.body = item.json.textHtml.replace(/<br(\\s*?\\/?)>/g, \"\\\\n\").replace(/(<([^>]+)>)/g, \"\").replace(/\\\"/g, \"\");\n    //item.json.body = item.json.textHtml.eplace(/(<([^>]+)>)/g, \"\").replace(/\\\"/g, \"\").replace(/\\n/g, \"\").replace(/\\r/g, \"\");\n  } else {\n    // Remove double quotations, line breaks, carriage returns\n    item.json.body = item.json.textPlain.replace(/\\\"/g, \"\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\");\n  }\n}\n\n// You can write logs to the browser console\nconsole.log('Done!');\n\nreturn items;"
      },
      "notesInFlow": true,
      "typeVersion": 1,
      "id": "node-b6611202"
    },
    {
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "notes": "Add card to Nextcloud Deck App. Configure board / stack id to your environment.",
      "position": [
        970,
        140
      ],
      "parameters": {
        "url": "{{ $env.BASE_URL }}",
        "options": {},
        "requestMethod": "POST",
        "authentication": "{{ $credentials.basicAuth }}",
        "jsonParameters": true,
        "bodyParametersJson": "={\n\"title\": \"{{$json[\"subject\"]}}\",\n\"type\": \"plain\",\n\"order\": -1,\n\"description\": \"{{$json[\"body\"]}}\"\n}",
        "headerParametersJson": "{\n\"OCS-APIRequest\": \"true\",\n\"Content-Type\": \"application/json\"\n}"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "{{ $credentials.httpBasicAuth.id }}",
          "name": "Nextcloud credential"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1,
      "id": "node-f021ae0a"
    },
    {
      "id": "error-3e6d9431",
      "name": "Error Handler",
      "type": "n8n-nodes-base.stopAndError",
      "typeVersion": 1,
      "position": [
        1000,
        400
      ],
      "parameters": {
        "message": "Workflow execution error",
        "options": {}
      }
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": null,
    "timezone": "UTC",
    "executionTimeout": 3600,
    "maxExecutions": 1000,
    "retryOnFail": true,
    "retryCount": 3
  },
  "connections": {},
  "meta": {
    "instanceId": "workflow-f19bd089",
    "versionId": "1.0.0",
    "createdAt": "2025-09-29T07:07:45.792442",
    "updatedAt": "2025-09-29T07:07:45.792456",
    "owner": "n8n-user",
    "license": "MIT",
    "category": "automation",
    "status": "active",
    "priority": "high",
    "environment": "production"
  },
  "tags": [
    "automation",
    "n8n",
    "production-ready",
    "excellent",
    "optimized"
  ],
  "description": "Production-ready workflow: Create Nextcloud Deck card from email. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}