{
  "name": "HasData - New Google reviews to Slack (test candidate)",
  "flow": [
    {
      "id": 1,
      "module": "util:SetVariables",
      "version": 1,
      "parameters": {},
      "mapper": {
        "variables": [
          {
            "name": "placeId",
            "value": "ChIJifIePKtZwokRVZ-UdRGkZzs"
          }
        ],
        "scope": "roundtrip"
      },
      "metadata": {
        "designer": {
          "x": 0,
          "y": 0
        },
        "interface": [
          {
            "name": "placeId",
            "type": "text",
            "label": "placeId"
          }
        ]
      }
    },
    {
      "id": 2,
      "module": "hasdata:googleMapsReviews",
      "version": 1,
      "parameters": {},
      "mapper": {
        "placeId": "{{1.placeId}}",
        "hl": "en",
        "sortBy": "newestFirst"
      },
      "metadata": {
        "designer": {
          "x": 300,
          "y": 0
        },
        "expect": [
          {
            "name": "dataId",
            "type": "text",
            "label": "Data ID"
          },
          {
            "name": "placeId",
            "type": "text",
            "label": "Place ID"
          },
          {
            "name": "hl",
            "type": "select",
            "label": "Language",
            "validate": {
              "enum": [
                "af",
                "ak",
                "sq",
                "ws",
                "am",
                "ar",
                "hy",
                "az",
                "eu",
                "be",
                "bem",
                "bn",
                "bh",
                "xx-bork",
                "bs",
                "br",
                "bg",
                "bt",
                "km",
                "ca",
                "chr",
                "ny",
                "zh-cn",
                "zh-tw",
                "zh-hk",
                "co",
                "hr",
                "cs",
                "da",
                "nl",
                "xx-elmer",
                "en",
                "eo",
                "et",
                "ee",
                "fo",
                "tl",
                "fil",
                "fi",
                "fr",
                "fy",
                "gaa",
                "gl",
                "ka",
                "de",
                "el",
                "kl",
                "gn",
                "gu",
                "xx-hacker",
                "ht",
                "ha",
                "haw",
                "iw",
                "he",
                "hi",
                "hu",
                "is",
                "ig",
                "id",
                "ia",
                "ga",
                "it",
                "ja",
                "jw",
                "kn",
                "kk",
                "rw",
                "rn",
                "xx-klingon",
                "kg",
                "ko",
                "kri",
                "ku",
                "ckb",
                "ky",
                "lo",
                "la",
                "lv",
                "ln",
                "lt",
                "loz",
                "lg",
                "ach",
                "mk",
                "mg",
                "my",
                "ml",
                "mt",
                "mv",
                "mi",
                "mr",
                "mfe",
                "mo",
                "mn",
                "ms",
                "sr-me",
                "ne",
                "pcm",
                "nso",
                "no",
                "nn",
                "oc",
                "or",
                "om",
                "ps",
                "fa",
                "xx-pirate",
                "pl",
                "pt",
                "pt-br",
                "pt-pt",
                "pa",
                "qu",
                "ro",
                "rm",
                "nyn",
                "ru",
                "gd",
                "sr",
                "sh",
                "st",
                "tn",
                "crs",
                "sn",
                "sd",
                "si",
                "sk",
                "sl",
                "so",
                "es",
                "es-419",
                "su",
                "sw",
                "sv",
                "tg",
                "ta",
                "tt",
                "te",
                "th",
                "ti",
                "to",
                "lua",
                "tum",
                "tr",
                "tk",
                "tw",
                "ug",
                "uk",
                "ur",
                "uz",
                "vu",
                "vi",
                "cy",
                "wo",
                "xh",
                "yi",
                "yo",
                "zu"
              ]
            }
          },
          {
            "name": "sortBy",
            "type": "select",
            "label": "Sort By",
            "validate": {
              "enum": [
                "mostRelevant",
                "newestFirst",
                "ratingHigh",
                "ratingLow"
              ]
            }
          },
          {
            "name": "topicId",
            "type": "text",
            "label": "Topic ID"
          },
          {
            "name": "nextPageToken",
            "type": "text",
            "label": "Next Page Token"
          }
        ],
        "parameters": [
          {
            "name": "__IMTCONN__",
            "type": "account:hasdata",
            "label": "Connection",
            "required": true
          }
        ]
      }
    },
    {
      "id": 3,
      "module": "builtin:BasicFeeder",
      "version": 1,
      "parameters": {},
      "mapper": {
        "array": "{{slice(2.reviews; 0; 1)}}"
      },
      "filter": {
        "name": "Successful HasData response",
        "conditions": [
          [
            {
              "a": "{{2.requestMetadata.status}}",
              "b": "ok",
              "o": "text:equal"
            }
          ]
        ]
      },
      "metadata": {
        "designer": {
          "x": 600,
          "y": 0
        },
        "interface": [
          {
            "name": "reviewId",
            "type": "text",
            "label": "Review ID"
          },
          {
            "name": "rating",
            "type": "number",
            "label": "Rating"
          },
          {
            "name": "snippet",
            "type": "text",
            "label": "Review text"
          },
          {
            "name": "link",
            "type": "text",
            "label": "Review link"
          },
          {
            "name": "isoDate",
            "type": "text",
            "label": "Review date"
          }
        ]
      }
    },
    {
      "id": 4,
      "module": "datastore:ExistRecord",
      "version": 1,
      "parameters": {},
      "mapper": {
        "key": "{{sha256(1.placeId)}}:{{sha256(3.reviewId)}}"
      },
      "metadata": {
        "designer": {
          "x": 900,
          "y": 0
        },
        "parameters": [
          {
            "name": "datastore",
            "type": "datastore",
            "label": "Data store",
            "required": true
          }
        ],
        "expect": [
          {
            "name": "key",
            "type": "text",
            "label": "Key",
            "required": true
          }
        ]
      },
      "filter": {
        "name": "Only reviews with an ID",
        "conditions": [
          [
            {
              "a": "{{3.reviewId}}",
              "o": "exist"
            },
            {
              "a": "{{length(3.reviewId)}}",
              "b": "0",
              "o": "number:greater"
            }
          ]
        ]
      }
    },
    {
      "id": 5,
      "module": "slack:CreateMessage",
      "version": 4,
      "parameters": {},
      "mapper": {
        "channelWType": "list",
        "channelType": "private",
        "channel": "",
        "text": "Newly observed Google review\nPlace: {{escapeHTML(2.placeInfo.title)}}\nRating (out of 5): {{3.rating}}\nReview date: {{3.isoDate}}\n{{escapeHTML(substring(ifempty(3.snippet; \"No review text returned\"); 0; 1500))}}\n{{escapeHTML(3.link)}}",
        "parse": false,
        "mrkdwn": false,
        "link_names": false,
        "unfurl_links": false,
        "unfurl_media": false
      },
      "metadata": {
        "designer": {
          "x": 1200,
          "y": 0
        },
        "parameters": [
          {
            "name": "__IMTCONN__",
            "type": "account:slack2,slack3",
            "label": "Connection",
            "required": true
          }
        ],
        "expect": [
          {
            "name": "channelWType",
            "type": "select",
            "label": "Enter a channel ID or name",
            "required": true,
            "validate": {
              "enum": [
                "manualy",
                "list"
              ]
            }
          },
          {
            "name": "text",
            "type": "text",
            "label": "Text"
          },
          {
            "name": "blocks",
            "type": "text",
            "label": "Blocks"
          },
          {
            "name": "thread_ts",
            "type": "text",
            "label": "Thread message ID (time stamp)"
          },
          {
            "name": "reply_broadcast",
            "type": "boolean",
            "label": "Reply broadcast"
          },
          {
            "name": "link_names",
            "type": "boolean",
            "label": "Link names"
          },
          {
            "name": "parse",
            "type": "boolean",
            "label": "Parse message text"
          },
          {
            "name": "mrkdwn",
            "type": "boolean",
            "label": "Use markdown"
          },
          {
            "name": "unfurl_links",
            "type": "boolean",
            "label": "Unfurl primarily text-based content"
          },
          {
            "name": "unfurl_media",
            "type": "boolean",
            "label": "Unfurl media content"
          },
          {
            "name": "icon_emoji",
            "type": "text",
            "label": "Icon emoji"
          },
          {
            "name": "icon_url",
            "type": "url",
            "label": "Icon url"
          },
          {
            "name": "username",
            "type": "text",
            "label": "User name"
          },
          {
            "name": "channelType",
            "type": "select",
            "label": "Channel type",
            "required": true,
            "validate": {
              "enum": [
                "public",
                "private",
                "im",
                "mpim"
              ]
            }
          },
          {
            "name": "channel",
            "type": "select",
            "label": "Private channel",
            "required": true
          }
        ]
      },
      "filter": {
        "name": "Review has not been announced",
        "conditions": [
          [
            {
              "a": "{{4.exist}}",
              "b": "false",
              "o": "text:equal"
            }
          ]
        ]
      }
    },
    {
      "id": 6,
      "module": "datastore:AddRecord",
      "version": 1,
      "parameters": {},
      "mapper": {
        "key": "{{sha256(1.placeId)}}:{{sha256(3.reviewId)}}",
        "overwrite": false
      },
      "metadata": {
        "designer": {
          "x": 1500,
          "y": 0
        },
        "parameters": [
          {
            "name": "datastore",
            "type": "datastore",
            "label": "Data store",
            "required": true
          }
        ],
        "expect": [
          {
            "name": "key",
            "type": "text",
            "label": "Key"
          },
          {
            "name": "overwrite",
            "type": "boolean",
            "label": "Overwrite an existing record",
            "required": true
          }
        ]
      }
    }
  ],
  "metadata": {
    "instant": false,
    "version": 1,
    "scenario": {
      "roundtrips": 1,
      "maxErrors": 3,
      "autoCommit": true,
      "autoCommitTriggerLast": true,
      "sequential": true,
      "slots": null,
      "confidential": false,
      "dataloss": false,
      "dlq": false,
      "freshVariables": false
    },
    "designer": {
      "orphans": []
    },
    "notes": []
  }
}

