{
  "name": "HasData - Indeed job details to Sheets (test candidate)",
  "flow": [
    {
      "id": 1,
      "module": "util:SetVariables",
      "version": 1,
      "parameters": {},
      "mapper": {
        "variables": [
          {
            "name": "keyword",
            "value": "software engineer"
          },
          {
            "name": "location",
            "value": "New York, NY"
          },
          {
            "name": "checkedAtUtc",
            "value": "{{formatDate(now; \"YYYY-MM-DD HH:mm:ss\"; \"UTC\")}}"
          }
        ],
        "scope": "roundtrip"
      },
      "metadata": {
        "designer": {
          "x": 0,
          "y": 0
        },
        "interface": [
          {
            "name": "keyword",
            "label": "keyword",
            "type": "any"
          },
          {
            "name": "location",
            "label": "location",
            "type": "any"
          },
          {
            "name": "checkedAtUtc",
            "label": "checkedAtUtc",
            "type": "any"
          }
        ]
      }
    },
    {
      "id": 2,
      "module": "hasdata:indeedListing",
      "version": 1,
      "parameters": {},
      "mapper": {
        "keyword": "{{1.keyword}}",
        "location": "{{1.location}}",
        "domain": "www.indeed.com",
        "sort": "relevance",
        "start": 0
      },
      "metadata": {
        "designer": {
          "x": 300,
          "y": 0
        },
        "parameters": [
          {
            "name": "__IMTCONN__",
            "type": "account:hasdata",
            "label": "Connection",
            "required": true
          }
        ],
        "expect": [
          {
            "name": "keyword",
            "type": "text",
            "label": "Search Query",
            "required": true
          },
          {
            "name": "location",
            "type": "text",
            "label": "Location",
            "required": true
          },
          {
            "name": "sort",
            "type": "select",
            "label": "Sort By",
            "validate": {
              "enum": [
                "relevance",
                "date"
              ]
            }
          },
          {
            "name": "domain",
            "type": "select",
            "label": "Domain",
            "validate": {
              "enum": [
                "ar.indeed.com",
                "au.indeed.com",
                "at.indeed.com",
                "bh.indeed.com",
                "be.indeed.com",
                "br.indeed.com",
                "ca.indeed.com",
                "cl.indeed.com",
                "cn.indeed.com",
                "co.indeed.com",
                "cr.indeed.com",
                "cz.indeed.com",
                "dk.indeed.com",
                "ec.indeed.com",
                "eg.indeed.com",
                "fi.indeed.com",
                "fr.indeed.com",
                "de.indeed.com",
                "gr.indeed.com",
                "hk.indeed.com",
                "hu.indeed.com",
                "in.indeed.com",
                "id.indeed.com",
                "ie.indeed.com",
                "il.indeed.com",
                "it.indeed.com",
                "jp.indeed.com",
                "kw.indeed.com",
                "lu.indeed.com",
                "malaysia.indeed.com",
                "mx.indeed.com",
                "ma.indeed.com",
                "nl.indeed.com",
                "nz.indeed.com",
                "ng.indeed.com",
                "no.indeed.com",
                "om.indeed.com",
                "pk.indeed.com",
                "pa.indeed.com",
                "pe.indeed.com",
                "ph.indeed.com",
                "pl.indeed.com",
                "pt.indeed.com",
                "qa.indeed.com",
                "ro.indeed.com",
                "sa.indeed.com",
                "sg.indeed.com",
                "za.indeed.com",
                "kr.indeed.com",
                "es.indeed.com",
                "se.indeed.com",
                "ch.indeed.com",
                "tw.indeed.com",
                "th.indeed.com",
                "tr.indeed.com",
                "ua.indeed.com",
                "ae.indeed.com",
                "uk.indeed.com",
                "www.indeed.com",
                "uy.indeed.com",
                "ve.indeed.com",
                "vn.indeed.com"
              ]
            }
          },
          {
            "name": "start",
            "type": "number",
            "label": "Result Offset"
          }
        ]
      }
    },
    {
      "id": 3,
      "module": "builtin:BasicFeeder",
      "version": 1,
      "parameters": {},
      "mapper": {
        "array": "{{slice(2.jobs; 0; 2)}}"
      },
      "metadata": {
        "designer": {
          "x": 600,
          "y": 0
        }
      }
    },
    {
      "id": 4,
      "module": "hasdata:indeedJob",
      "version": 1,
      "parameters": {},
      "mapper": {
        "url": "{{3.url}}"
      },
      "metadata": {
        "designer": {
          "x": 900,
          "y": 0
        },
        "parameters": [
          {
            "name": "__IMTCONN__",
            "type": "account:hasdata",
            "label": "Connection",
            "required": true
          }
        ],
        "expect": [
          {
            "name": "url",
            "type": "url",
            "label": "Job URL",
            "required": true
          }
        ]
      },
      "filter": {
        "name": "Direct Indeed detail URLs only",
        "conditions": [
          [
            {
              "a": "{{3.url}}",
              "o": "text:startswith",
              "b": "https://www.indeed.com/m/viewjob?jk="
            }
          ],
          [
            {
              "a": "{{3.url}}",
              "o": "text:startswith",
              "b": "https://www.indeed.com/viewjob?jk="
            }
          ]
        ]
      }
    },
    {
      "id": 5,
      "module": "google-sheets:addRow",
      "version": 2,
      "parameters": {},
      "mapper": {
        "from": "drive",
        "mode": "select",
        "spreadsheetId": "",
        "sheetId": "Jobs",
        "includesHeaders": true,
        "useColumnHeaders": false,
        "insertDataOption": "INSERT_ROWS",
        "valueInputOption": "RAW",
        "insertUnformatted": false,
        "values": {
          "0": "{{1.checkedAtUtc}}",
          "1": "{{1.keyword}}",
          "2": "{{1.location}}",
          "3": "{{3.url}}",
          "4": "{{4.job.title}}",
          "5": "{{4.job.company}}",
          "6": "{{4.job.location}}",
          "7": "{{4.job.salary.min}}",
          "8": "{{4.job.salary.max}}",
          "9": "{{4.job.salary.type}}",
          "10": "{{3.description}}"
        }
      },
      "metadata": {
        "designer": {
          "x": 1200,
          "y": 0
        },
        "parameters": [
          {
            "name": "__IMTCONN__",
            "type": "account:google",
            "label": "Connection",
            "required": true
          }
        ]
      }
    }
  ],
  "metadata": {
    "instant": false,
    "version": 1,
    "scenario": {
      "roundtrips": 1,
      "maxErrors": 3,
      "autoCommit": true,
      "autoCommitTriggerLast": true,
      "sequential": false,
      "slots": null,
      "confidential": false,
      "dataloss": false,
      "dlq": false,
      "freshVariables": false
    },
    "designer": {
      "orphans": []
    },
    "notes": []
  }
}
