{
  "id": "qhFnUCIvmwP47FhK",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "GoDaddy Subdomain Management Workflow using n8n & GoDaddy API",
  "tags": [],
  "nodes": [
    {
      "id": "ad85bd3c-1605-4b5e-823c-009280d2dae7",
      "name": "Create Subdomain",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        660,
        460
      ],
      "parameters": {
        "url": "api_url",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"domain\": \"{{ $json.domain }}\",\n  \"subdomain\": \"{{ $json.subdomain }}\",\n  \"ip\": \"{{ $json.ip }}\"\n}\n ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Key",
              "value": "Content-Type"
            },
            {
              "name": "Value",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "629e7d14-10b5-42c9-8332-2cdfbc847f33",
      "name": "Delete Subdomain",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        660,
        660
      ],
      "parameters": {
        "url": "api_url",
        "method": "DELETE",
        "options": {},
        "jsonBody": "={\n  \"domain\": \"{{ $json.domain }}\",\n  \"subdomain\": \"{{ $json.subdomain }}\",\n  \"ip\": \"{{ $json.ip }}\"\n}\n ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Key",
              "value": "Content-Type"
            },
            {
              "name": "Value",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "66b4d0fe-037e-4337-911a-e6d2f19335d9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        220
      ],
      "parameters": {
        "width": 400,
        "height": 200,
        "content": "This n8n workflow automates subdomain creation and deletion on GoDaddy using their API, triggered via email requests. This empowers developers to manage subdomains directly without involving DevOps for minor tasks."
      },
      "typeVersion": 1
    },
    {
      "id": "df3c9425-7d2e-4489-aada-01a321d56b1e",
      "name": "Start Workflow (GET Request)",
      "type": "n8n-nodes-base.emailReadImap",
      "position": [
        0,
        560
      ],
      "parameters": {
        "options": {
          "customEmailConfig": "[\"UNSEEN\", [\"SUBJECT\", \"subdomain\"]]"
        }
      },
      "credentials": {
        "imap": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e497482e-83b6-4632-bbe3-56cfeccc0a95",
      "name": "Extract Data from Email",
      "type": "n8n-nodes-base.code",
      "position": [
        220,
        560
      ],
      "parameters": {
        "jsCode": "const emailBody = $json[\"textPlain\"] || \"\";\n\nfunction matchFirst(patterns) {\n  for (const pattern of patterns) {\n    const match = emailBody.match(pattern);\n    if (match) return match[1];\n  }\n  return null;\n}\n\n// Match domain (various phrasings)\nconst domain = matchFirst([\n  /domain[:\\s*]*([a-zA-Z0-9.-]+\\.[a-z]{2,})/i,\n  /on domain\\s+([a-zA-Z0-9.-]+\\.[a-z]{2,})/i\n]);\n\n// Match subdomain\nconst subdomain = matchFirst([\n  /subdomain[:\\s*]*([a-zA-Z0-9-]+)/i,\n  /create subdomain\\s+([a-zA-Z0-9-]+)/i\n]);\n\n// Match IP address\nconst ip = matchFirst([\n  /IP\\s*(?:Address)?[:\\s*]*((?:\\d{1,3}\\.){3}\\d{1,3})/i,\n  /with IP\\s+((?:\\d{1,3}\\.){3}\\d{1,3})/i\n]);\n\n// Determine task type (create/delete)\nlet task_type = \"create\"; // default\nif (emailBody.toLowerCase().includes(\"delete\")) {\n  task_type = \"delete\";\n} else if (emailBody.toLowerCase().includes(\"create\")) {\n  task_type = \"create\";\n}\n\nreturn [\n  {\n    json: {\n      domain,\n      subdomain,\n      ip,\n      task_type\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "473060c3-ef5a-43c4-bfd6-920b300357fc",
      "name": "Validate Action Type",
      "type": "n8n-nodes-base.if",
      "position": [
        440,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d4ca0b62-7d96-45ca-8c1f-30268d41bc0d",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.task_type }}",
              "rightValue": "=create"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0c9d9758-b4b8-4f7e-b35b-8647628fd7fe",
      "name": "Send Email Response",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        880,
        560
      ],
      "parameters": {
        "text": "={{ $json.message }}\n\n\nYou can verify the subdomain from: https://www.nslookup.io/\n",
        "options": {
          "replyTo": "={{ $('Start Workflow (GET Request)').item.json.from }}"
        },
        "subject": "={{ $('Validate Action Type').item.json.task_type === 'create' ? 'Subdomain Created Successfully' : 'Subdomain Deleted Successfully' }}\n",
        "toEmail": "={{ $('Start Workflow (GET Request)').item.json.from }}",
        "fromEmail": "user@example.com",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "444742fb-cc81-4f14-b4e0-dd1a912d1cca",
  "connections": {
    "Create Subdomain": {
      "main": [
        [
          {
            "node": "Send Email Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Delete Subdomain": {
      "main": [
        [
          {
            "node": "Send Email Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Action Type": {
      "main": [
        [
          {
            "node": "Create Subdomain",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Delete Subdomain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data from Email": {
      "main": [
        [
          {
            "node": "Validate Action Type",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Workflow (GET Request)": {
      "main": [
        [
          {
            "node": "Extract Data from Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}